CouchDB একটি Document-Oriented NoSQL ডাটাবেস, যেখানে ডেটা JSON ফরম্যাটে সংরক্ষণ করা হয়। CouchDB ডেটাতে Multi-Version Concurrency Control (MVCC) ব্যবহার করে, যা একাধিক ব্যবহারকারী বা সার্ভার যখন একই ডকুমেন্টে পরিবর্তন করে, তখন কনফ্লিক্ট সৃষ্টি হতে পারে। CouchDB এই কনফ্লিক্টগুলোর সমাধান করতে বিভিন্ন পদ্ধতি প্রদান করে, যাতে ডেটা সঠিকভাবে সিঙ্ক্রোনাইজ এবং আপডেট করা যায়।
CouchDB তে কনফ্লিক্ট ঘটে যখন একাধিক পরিবর্তন একই ডকুমেন্টের উপর এক সময়ে করা হয়, বিশেষ করে যখন:
CouchDB কনফ্লিক্টগুলি _rev (রিভিশন) ফিল্ড ব্যবহার করে ট্র্যাক করে। প্রতিটি পরিবর্তন একটি নতুন _rev তৈরি করে, এবং যখন কনফ্লিক্ট ঘটে, CouchDB দুটি _rev (রিভিশন) ম্যানেজ করে।
CouchDB কনফ্লিক্ট ম্যানেজমেন্টে MVCC প্রযুক্তি ব্যবহার করে এবং কনফ্লিক্ট সমাধানের জন্য কিছু নির্দিষ্ট পদ্ধতি রয়েছে:
CouchDB কনফ্লিক্টগুলি সমাধান করার জন্য স্বয়ংক্রিয়ভাবে কনফ্লিক্ট রেজলিউশন প্রদান করে না, তবে এটি কনফ্লিক্টের _conflicts ফিল্ডে রিভিশনগুলো চিহ্নিত করে, যাতে আপনি ম্যানুয়ালি সমাধান করতে পারেন।
যদি একটি কনফ্লিক্ট থাকে, তবে GET রিকুয়েস্টে কনফ্লিক্টের সংশ্লিষ্ট রিভিশনগুলিকে দেখা যাবে, এবং আপনি PUT রিকুয়েস্ট ব্যবহার করে সেই রিভিশনকে সমাধান করতে পারবেন। যেমন:
কনফ্লিক্ট চিহ্নিত করা:
GET /{db_name}/{doc_id}
কনফ্লিক্টসমূহ _conflicts ফিল্ডে দেখাবে, উদাহরণস্বরূপ:
{
"_id": "12345",
"_rev": "2-abc",
"_conflicts": ["1-xyz", "2-abc"]
}
কনফ্লিক্ট সমাধান এবং পুনঃসংরক্ষণ:
PUT /{db_name}/{doc_id}
{
"_rev": "3-def",
"name": "John Doe",
"age": 31
}
কনফ্লিক্টের মাঝে দুটি ডকুমেন্টের মধ্যে যদি আলাদা আলাদা তথ্য থাকে, তাহলে আপনি দুটি সংস্করণকে একত্রিত করতে পারেন। উদাহরণস্বরূপ:
ডকুমেন্ট ১:
{
"_id": "12345",
"_rev": "1-abc",
"name": "John",
"age": 30
}
ডকুমেন্ট ২:
{
"_id": "12345",
"_rev": "2-def",
"name": "John",
"age": 31,
"city": "New York"
}
সমাধানস্বরূপ, আপনি name, age, এবং city ফিল্ড একত্রিত করে একটি নতুন ডকুমেন্ট তৈরি করতে পারেন:
{
"_id": "12345",
"_rev": "3-xyz",
"name": "John",
"age": 31,
"city": "New York"
}
CouchDB তে কনফ্লিক্ট সমাধান প্রক্রিয়া একটি শক্তিশালী বৈশিষ্ট্য, যা ডিস্ট্রিবিউটেড ডেটাবেসে ডেটার সঠিকতা এবং কনসিস্টেন্সি নিশ্চিত করে। এর মাধ্যমে আপনি একাধিক রিভিশন পরিচালনা করতে পারবেন এবং যেকোনো সময় কনফ্লিক্ট সমাধান করতে সক্ষম হবেন।
common.read_more